INTRODUCCIÓN

contextualiza la idea del seminario, entrega una idea general de la temática, de lo que se sabe y sobre todo de lo que no se sabe y queréis abordar en vuestro trabajo.

El suicidio es un fenómeno ocmplejo que constituye un importante problema de salud pública en España y en el mundo. Aunque se dispone de información general sobre la mortalidad por suicidio, la evidencia científica revela diferencias significativas según el sexo, la edad y el territorio.

En este seminario, nos proponemos comparar el suicidio utilizando distintos conjuntos de datos (sexo, edad y territorio) para explorar las diferencias y analizar a que se deben.

OBJETIVOS

  1. Describir la distribución del suicidio por sexo en España.

  2. Analizar las diferencias entre provincias.

  3. Estudiar la influencia del grupo de edad en la cantidad de suicidios.

  4. Unificar los datos CSV y JSON para obtener una vista más completa.

  5. (Opcional) Explorar si existe relación entre grupos de edad + provincias + sexo.

PAQUETES UTILIZADOS

Para poder utilizar nuestros conjuntos de datos es necesario importar las siguientes librerias y paquetes:

# Datos con formato .csv:
library(readr)

#Datos con formato .json:
library(tidyverse)
library(rjson)
library(jsonlite)
library(tidyjson)

#Visualizacion resultados:
library(DT)
library(ggplot2)
library(gifski)
library(gganimate)
library(plotly)
library(dplyr)
library(mapSpain)
library(knitr) # librería para tablas 

DESARROLLO Y RESULTADOS

Una vez cargadas las librerias importamos los datos

OBTENCIÓN DE LOS DATOS

Para este trabajo se han utilizado dos conjuntos de datos procedentes del Instituto Nacional de Estadísitca (INE), a través de sus estadísticas oficiales sobre defunciones según causa de muerte. Ambas fuentes se han descargado directamente desde la herramienta de consulta del INE y contienen información actualizada y validada por el organismo.

  • provincias_sexo.csv: Este archivo recoge la tasa de suicidios por cada 100.000 habitantes en Esapaña, desglosada por: provincia, sexo (total, hombes, mujeres) y año (2021, 2022 y 2023). Cada fila representa la tasa correspondiente a un territorio y un sexo concreto en un año determinado. Estos valores provienen directamente el INE y reflejan las tasas oficiales calculadas del instituto, basadas en la población residente de cada año. Este archivo le hemos utilizado para:
    • Analizar la evolución reciente (2021 - 2023)
    • Las diferencias entre sexos
    • Las variaciones territoriales entre provincias.
  • suicidio_Edad-Sexo.json: Este JSON contiene el número absoluto de suicidios registrados a nivel nacional en el año 2022 (creemos). Está desglosado por grupo de edad y por sexo. La estructura del Json incluye:
    • Un campo MetaData, donde se especifíca el sexo y el grupo de edad.
    • Un campo Data, donde aparece el valor numérico de suicidios en ese grupo. Estos datos también han sido descargados del INE y corresponden al mismo sistema estadístico, pero en este caso sin convertirlos en tasas, es decir, son numéros absolutos de casos, no tasas de población. Este archivo se ha empleado para:
    • Calcular los suicidios totales por sexo
    • Relacionar los valores con la población para obtener tasas a medida
    • Analizar diferencias entre grupos de edad

En resumen, el CSV ofrece tasas por provincia, sexo y año, mientras que el JSON proporciona números absolutos por edad y sexo a nivel nacional. Esta combinación permite un análisis estadístico completo tanto a nivel territorial como demográfico.

IMPORTACIÓN DE LOS DATOS

IMPORTACIÓN DATOS CSV

En algunos de nuestros archivos csv, es necesario especificar el tipo de codificación que tienen, para que R pueda leer correctamente los caracteres especiales como tildes o ñ. En nuestro caso utilizan la codificacion ISO 8859-1 que corresponde con el alfabeto español??? :

# Para conocer el tipo de codificación: 
encoding <- guess_encoding("INPUT/DATA/provincias_sexo.csv")
print(encoding)
## # A tibble: 4 × 2
##   encoding     confidence
##   <chr>             <dbl>
## 1 UTF-8              1   
## 2 Shift_JIS          1   
## 3 windows-1252       0.45
## 4 windows-1250       0.21
provincias <- read_delim("INPUT/DATA/provincias_sexo.csv", 
                         delim = ";", trim_ws = TRUE, 
                         locale = locale(encoding = "ISO-8859-1"),
                         # FORZAMOS QUE TODO SE LEA COMO TEXTO AL PRINCIPIO
                         col_types = cols(.default = "c"))
head(provincias)
## # A tibble: 6 × 4
##   Provincias Sexo    Periodo Total 
##   <chr>      <chr>   <chr>   <chr> 
## 1 Nacional   Total   2023    8,512 
## 2 Nacional   Total   2022    8,846 
## 3 Nacional   Total   2021    8,45  
## 4 Nacional   Hombres 2023    12,846
## 5 Nacional   Hombres 2022    13,343
## 6 Nacional   Hombres 2021    12,833

IMPORTACIÓN DEL JSON

# Ruta al archivo JSON
ruta_json <- "INPUT/DATA/Suicidio_Edad-Sexo.json"

# Importar JSON y convertir a dataframe
suicidios_json <- fromJSON(ruta_json)
#suicidios_json <- as.data.frame(suicidios_json)

# Mostrar las primeras filas
head(suicidios_json)
##                            Nombre
## 1   Todas las edades, Ambos sexos
## 2       Todas las edades, Hombres
## 3       Todas las edades, Mujeres
## 4 Menores de 15 años, Ambos sexos
## 5     Menores de 15 años, Hombres
## 6     Menores de 15 años, Mujeres
##                                                                   MetaData Data
## 1    edad, sexo, Todas las edades, Ambos sexos, todaslasedades, ambossexos 4227
## 2           edad, sexo, Todas las edades, Hombres, todaslasedades, hombres 3126
## 3           edad, sexo, Todas las edades, Mujeres, todaslasedades, mujeres 1101
## 4 edad, sexo, Menores de 15 años, Ambos sexos, menoresde15anos, ambossexos   12
## 5        edad, sexo, Menores de 15 años, Hombres, menoresde15anos, hombres    9
## 6        edad, sexo, Menores de 15 años, Mujeres, menoresde15anos, mujeres    3

FILTRADO Y PREPARACIÓN DE LOS DATOS

Los datos han sido filtrados y preparados para asegurar la coherencia entre las fuentes. Se eliminaron los totales generales en sexo para poder comparar hombres y mujeres. Se normalizó el nombre de las provincias para ….noseq y se separó el json en edad, sexo y valor para noseqqq

Convertir la columna ‘Total’ del CSV de texto a número

provincias <- provincias %>%
  mutate(
    # Ahora 'Total' es texto seguro (ej: "13,34").
    # Cambiamos la coma por punto.
    Total = as.numeric(gsub(",", ".", Total)),
    # Aprovechamos para convertir 'Periodo' a número también
    Periodo = as.numeric(Periodo)
  )

# Ahora creamos el dataframe filtrado
Suicidios_CSV_filtrado <- provincias %>%
  filter(Sexo != "Total", 
         Provincias != "Nacional")

# Verificamos: Total debe ser <dbl> (número real con decimales)
head(Suicidios_CSV_filtrado)
## # A tibble: 6 × 4
##   Provincias             Sexo    Periodo Total
##   <chr>                  <chr>     <dbl> <dbl>
## 1 "01 Araba/Ã\u0081lava" Hombres    2023 10.8 
## 2 "01 Araba/Ã\u0081lava" Hombres    2022 13.9 
## 3 "01 Araba/Ã\u0081lava" Hombres    2021 11.0 
## 4 "01 Araba/Ã\u0081lava" Mujeres    2023  4.09
## 5 "01 Araba/Ã\u0081lava" Mujeres    2022  4.70
## 6 "01 Araba/Ã\u0081lava" Mujeres    2021  5.32

Normalizar nombres de provincias (quitar tildes, ñ o cosas q hagan q los nombres se vean mal)

# Crear el dataframe filtrado para el gráfico
# (Usa el dataframe 'provincias' que ya cargaste y mutaste)
Suicidios_CSV_filtrado <- provincias %>%
  filter(Sexo != "Total", 
         Provincias != "Nacional")

# Ver el resultado (opcional)
head(Suicidios_CSV_filtrado)
## # A tibble: 6 × 4
##   Provincias             Sexo    Periodo Total
##   <chr>                  <chr>     <dbl> <dbl>
## 1 "01 Araba/Ã\u0081lava" Hombres    2023 10.8 
## 2 "01 Araba/Ã\u0081lava" Hombres    2022 13.9 
## 3 "01 Araba/Ã\u0081lava" Hombres    2021 11.0 
## 4 "01 Araba/Ã\u0081lava" Mujeres    2023  4.09
## 5 "01 Araba/Ã\u0081lava" Mujeres    2022  4.70
## 6 "01 Araba/Ã\u0081lava" Mujeres    2021  5.32

Eliminar “total” en sexo

Para así comparar hombres vs mujeres (entonces yo quitaría lo de cambiar el separador decimal xq si quitamos el total no nos hace falta camibar lo de . por , nose)

library(dplyr)
library(purrr)
library(tidyr)

# ===============================
# 1. Provincias: eliminar "Total" en Sexo
# ===============================
provincias_filtrado <- provincias %>%
  filter(Sexo != "Total")

# Revisar resultado
head(provincias_filtrado)
## # A tibble: 6 × 4
##   Provincias Sexo    Periodo Total
##   <chr>      <chr>     <dbl> <dbl>
## 1 Nacional   Hombres    2023 12.8 
## 2 Nacional   Hombres    2022 13.3 
## 3 Nacional   Hombres    2021 12.8 
## 4 Nacional   Mujeres    2023  4.35
## 5 Nacional   Mujeres    2022  4.52
## 6 Nacional   Mujeres    2021  4.23

El JSON:separar edad y sexo

Extraer: - Lista de edades - Lista de sexos - Valor

# Chunk CORREGIDO para: ### El JSON:separar edad y sexo
# (Asegúrate de tener 'library(tidyverse)' y 'library(jsonlite)' en tu chunk de paquetes)

# Este código usa un método más robusto para "aplanar" el JSON
# y evitar que se creen valores NA.

Suicidios_Edad <- as_tibble(suicidios_json) %>%
  
  # 1. Extraer el 'Valor' de la sub-lista 'Data'
  #    (map_dbl toma cada elemento de 'Data' y extrae el primer 'Valor')
  mutate(Valor = map_dbl(Data, ~ .x$Valor[1])) %>%
  
  # 2. Guardar el 'Nombre' original (ej. "De 15 a 29 años, Hombres")
  #    como un ID único para agrupar las filas.
  select(ID_Fila = Nombre, Valor, MetaData) %>%
  
  # 3. Desanidar 'MetaData', que creará dos filas por cada ID_Fila
  #    (una para 'edad' y otra para 'sexo')
  unnest(MetaData) %>%
  
  # 4. Seleccionar solo las columnas que necesitamos para pivotar
  select(ID_Fila, Valor, T3_Variable, Nombre) %>%

  # 5. Pivotar usando el ID_Fila. Esto asegura que la 'edad' y el 'sexo'
  #    del mismo ID_Fila terminen en la misma fila, junto a su 'Valor'.
  pivot_wider(names_from = T3_Variable, values_from = Nombre) %>%
  
  # 6. Filtrar los totales (como antes)
  filter(sexo != "Ambos sexos",
         edad != "Todas las edades") %>%
  
  # 7. (Opcional) Quitar la columna de ID, ya no la necesitamos
  select(edad, sexo, Valor)

# Ver el resultado (opcional)
# Esta tabla ya no debería tener NAs en 'edad' o 'sexo'
print("Datos JSON (versión final) listos:")
## [1] "Datos JSON (versión final) listos:"
head(Suicidios_Edad)
## # A tibble: 6 × 3
##   edad               sexo    Valor
##   <chr>              <chr>   <dbl>
## 1 Menores de 15 años Hombres     9
## 2 Menores de 15 años Mujeres     3
## 3 De 15 a 29 años    Hombres   224
## 4 De 15 a 29 años    Mujeres   117
## 5 De 30 a 39 años    Hombres   336
## 6 De 30 a 39 años    Mujeres   100

RESULTADOS

Aquí vienen los gráficos

Suicidio por sexo a nivel nacional

Usando los datos del JSON, a partir de la tabla Suicidios_Edad (con las columnas sexo, edad y valor), agrupamos los datos que tengan el mismo valor en la columna sexo (hombres/mujeres) y para cada grupo hemos calculado la suma total de la columna valor. Como resultado obtenemos un nuevo tibble de 2 filas (una por sexo), con las columnas sexo y total. Con el nuevo tibble creamos un gráfico de barras.

# Sumar los valores por sexo
suicidio_sexo_nacional <- Suicidios_Edad %>%
  group_by(sexo) %>%
  summarise(Total = sum(Valor, na.rm = TRUE))

# Revisar tabla
print(suicidio_sexo_nacional)
## # A tibble: 2 × 2
##   sexo    Total
##   <chr>   <dbl>
## 1 Hombres  3126
## 2 Mujeres  1101
# #GRAFICO DE BARRAS (suicidios por sexo a nivel nacional)
ggplot(suicidio_sexo_nacional, aes(x = sexo, y = Total, fill = sexo)) +
  geom_bar(stat = "identity") +
  labs(
    title = "Suicidios por sexo a nivel nacional",
    x = "Sexo",
    y = "Número total de suicidios"
  ) +
  scale_fill_manual(values = c("Hombres" = "#1f77b4", "Mujeres" = "#ff7f0e")) +
  theme_minimal()

Podemos representar los datos anteriores en otros tipos de gráfico, por ejemplo el gráfico circular. Igual que en el anterior, agrupamos los datos que tengan el mismo valor en la columna sexo, y para cada grupo calculamos la suma total de la columna valor, obteniendo como resultado un nuevo tibble para llevar a cabo el gráfico circular.

# 1. Filtrar datos a nivel nacional (ya que JSON tiene solo sexo y edad, sumamos por sexo)
nacional_sexo <- Suicidios_Edad %>%
  group_by(sexo) %>%
  summarise(Total = sum(Valor))

print(nacional_sexo) #visualizamos el nuevo tibble
## # A tibble: 2 × 2
##   sexo    Total
##   <chr>   <dbl>
## 1 Hombres  3126
## 2 Mujeres  1101
#GRÁFICO CIRCULAR
ggplot(nacional_sexo, aes(x = "", y = Total, fill = sexo)) +
  geom_bar(stat = "identity", width = 1) +   # barra para convertir a circular
  coord_polar(theta = "y") +                 # transforma a circular
  labs(title = "Suicidios por sexo a nivel nacional") +
  theme_minimal() +
  theme(axis.title = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank()) +
  scale_fill_manual(values = c("Hombres" = "steelblue", "Mujeres" = "pink"))

INTERPRETACIÓN El gráfico de barras compara el total de suicidios entre hombres y mujeres, muestra que los hombreses presentan un mayor número de suicidios. El gráfico circular representa la misma información, pero en proporciones del total, muestra que los hombres representan aproximadamente el 75% de los suicidios a nivel nacional, mientras que las mujeres el 25%.

En conclusión, los análisis del total de suicidios según el sexo muestra una diferencia clara entre hombres y mujeres. En España, el número total de suicidios es significativamente mayor en hombres que en mujeres, lo cual coincide con las estadísitcas nacionales e internacionales, donde los hombres presentan tasas de suicidio más elevadas a pesar de que las mujeres registran más intentos no letales. Este patrón puede estar asociado a factores socioculturales, diferencias en métodos utilizados, menor búsqueda de ayuda por parte de los hombres o barreras sociales relaccionadas con la salud mental.

Suicidio por provincia

# Carga la librería plotly (si no está ya cargada)
library(plotly)

# 1. CREA el gráfico de ggplot (como antes, pero lo guardamos en una variable 'p')
#    (Añado 'ncol=6' para que plotly tenga un layout inicial ordenado)
p <- ggplot(Suicidios_CSV_filtrado, aes(x = Sexo, y = Total, color = Sexo)) + 
  geom_point() + 
  facet_wrap(~Provincias, ncol = 6) + # 6 columnas de mini-gráficos
  theme(
    axis.text.x = element_text(angle = 0), 
    strip.text = element_text(size = 7) 
  )

# 2. CONVIÉRTELO en interactivo con un solo comando
#    Ahora podrás hacer zoom y ver los detalles
ggplotly(p)

Suicidio por edad (JSON)

# Gráfico 4.4.3: Suicidio por edad (CORREGIDO)
# La corrección está en aes(fill = sexo) -> (todo en minúscula)

ggplot(Suicidios_Edad, aes(x = edad, y = Valor, fill = sexo)) + 
  geom_bar(stat = "identity", position = "dodge") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

Union CSV + JSON

Como el CSV tiene los datos en referencia a 100.000 habitantes, vamos a hacer lo mismo con el JSON y así podremos compararlos.

1. Creacción de la tabla de referencia En este paso,creamos una tabla de referencia de población, para ello usamos los datos oficiales totales de hombres y mujeres encontrados en INE. En esta nueva tabla la columna sexo será clave para unirla posteriormente con nuestros datos.

poblacion_ref <- data.frame(
  sexo = c("Hombres", "Mujeres"),
  Poblacion_Nacional = c(23265381, 24210039) 
)

print(poblacion_ref)
##      sexo Poblacion_Nacional
## 1 Hombres           23265381
## 2 Mujeres           24210039

2. Unión y cálculo de tasas

Unimos la nueva tabla creada con la población de referencia al JSON y calculamos las tasas. Left_join: Esta función incorpora los datos de la tabla calculada anteriormente (poblacion_ref) a nuestra tabla principal (suicidios_edad). Busca coindidencias en la columna comun ‘sexo’ y añade la columna ‘Poblacion_Nacional’ a cada fila correspondiente. mutate(Tasa_aportacion…): crea una nueva columna calculada que nos da la tasa específica de ese grupo de edad. Nos dice cuantos suicidios aporta ese rango de edad para cada 100.000 habitantes de ese sexo.

# Partimos de la tabla 'Suicidios_Edad' que creamos al procesar el JSON
Suicidios_Con_Tasas <- Suicidios_Edad %>%
  # Unimos con nuestra tabla de población manual mediante un left_join
  left_join(poblacion_ref, by = "sexo") %>%
  # Calculamos la tasa por 100.000 habitantes
  mutate(Tasa_Aportacion = (Valor / Poblacion_Nacional) * 100000)

# Visualizamos la tabla resultante
head(Suicidios_Con_Tasas)
## # A tibble: 6 × 5
##   edad               sexo    Valor Poblacion_Nacional Tasa_Aportacion
##   <chr>              <chr>   <dbl>              <dbl>           <dbl>
## 1 Menores de 15 años Hombres     9           23265381          0.0387
## 2 Menores de 15 años Mujeres     3           24210039          0.0124
## 3 De 15 a 29 años    Hombres   224           23265381          0.963 
## 4 De 15 a 29 años    Mujeres   117           24210039          0.483 
## 5 De 30 a 39 años    Hombres   336           23265381          1.44  
## 6 De 30 a 39 años    Mujeres   100           24210039          0.413

3. Gráfico comparativo

Generamos un gráfico de barras para visualizar las tasas calculadas para cada grupo de edad, confirmando que se corresponde con la misma forma del anterior gráfico, pero esta vez, calculado con la tasa por cada 100.000 habitantes del mismo sexo.

#En el eje X ponemos los grupos de edad y en el eje Y la tasa calculada.
#Con 'dodge', las barras de hombres y mujeres se colocan una al lado de otra, evitando solapamientos. 
ggplot(Suicidios_Con_Tasas, aes(x = edad, y = Tasa_Aportacion, fill = sexo)) +
  geom_bar(stat = "identity", position = "dodge") +
  scale_fill_manual(values = c("Hombres" = "#1f77b4", "Mujeres" = "#ff7f0e")) +
  labs(
    title = "Tasa de suicidios por grupo de edad (2022)",
    subtitle = "Tasa por cada 100.000 habitantes del mismo sexo",
    y = "Tasa (x 100.000 hab.)",
    x = "Grupo de Edad"
  ) +
  theme_minimal() +
  #rotamos 45 grados las etiquetas del eje X porque los nombres de los grupos de edad son largos y si no se solaparían.
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    legend.position = "top"
  )

4. Validación (unión)

Este es el paso de control de calidad para demostrar que las fuentes (CSV y JSON) son coherentes entre sí. - validacion_json: Agrupamos los datos del JSON por sexo y sumamos todas las tasas parciales de los grupos de edad. La suma de las partes debe dar el total nacional. - validacion_csv: Filtramos para quedarnos solo con el dato nacional de 2022 (ya que el JSON se corresponde también con dicho año) - left_join: Une los dos resultados en una sola tabla (comparativa_fuentes). Si los números coindicen, hemos demostrado que la integración de los datos es correcta.

# 1. Calculamos la tasa total del JSON
validacion_json <- Suicidios_Con_Tasas %>%
  group_by(sexo) %>%
  summarise(Tasa_Calculada_JSON = sum(Tasa_Aportacion))

# 2. Sacamos la tasa del CSV (¡Ahora ya está limpia!)
validacion_csv <- provincias %>% 
  filter(Provincias == "Nacional", Periodo == 2022, Sexo != "Total") %>%
  select(Sexo, Tasa_Oficial_CSV = Total)

# 3. Unimos ambas tablas
comparativa_fuentes <- left_join(validacion_json, validacion_csv, by = c("sexo" = "Sexo"))

print(comparativa_fuentes)
## # A tibble: 2 × 3
##   sexo    Tasa_Calculada_JSON Tasa_Oficial_CSV
##   <chr>                 <dbl>            <dbl>
## 1 Hombres               13.4             13.3 
## 2 Mujeres                4.55             4.52
# 4. Para poner la tabla bonita 
#library(knitr)
#kable(comparativa_fuentes, 
     # col.names = c("Sexo", "Tasa JSON (Calculada)", "Tasa CSV (Oficial)"),
     # digits = 2, 
     # caption = "Validación de tasas (2022)")

5- Gráfico comparando CSV y JSON

Representamos gráficamente la validación anterior. El siguiente gráfico nos permite confirmar visualmente la cosistencia entre nuestras dos fuentes de datos. Si las barras de cada par tienen la misma altura, significa que la integración de los datos absolutos del JSON con las tasas oficiales del CSV se corresponden.

# 1. Preparamos los datos 

# A) Datos del JSON (Calculados)
datos_json <- comparativa_fuentes %>%
  select(sexo, Tasa = Tasa_Calculada_JSON) %>%
  mutate(
    Fuente = "Cálculo propio (JSON)",
    Tasa = as.numeric(Tasa) # Aseguramos que sea número
  )

# B) Datos del CSV (Oficiales) 
datos_csv <- comparativa_fuentes %>%
  select(sexo, Tasa = Tasa_Oficial_CSV) %>%
  mutate(
    Fuente = "Dato Oficial (CSV)",
    # Pasamos a texto -> cambiamos coma por punto -> pasamos a número
    Tasa = as.numeric(gsub(",", ".", as.character(Tasa)))
  )

# C) Unimos las dos tablas (ahora sí, ambas son numéricas)
datos_grafico <- bind_rows(datos_json, datos_csv)

# 2. Creamos el gráfico de barras agrupadas
ggplot(datos_grafico, aes(x = sexo, y = Tasa, fill = Fuente)) +
  geom_bar(stat = "identity", position = "dodge", width = 0.7) +
  geom_text(aes(label = round(Tasa, 2)), 
            position = position_dodge(width = 0.7), 
            vjust = -0.5, size = 3.5) +
  scale_fill_manual(values = c("Cálculo propio (JSON)" = "#2ca02c", "Dato Oficial (CSV)" = "#7f7f7f")) +
  labs(
    title = "Comparativa de consistencia entre fuentes de datos",
    subtitle = "Tasa de suicidio por sexo (Año 2022)",
    y = "Tasa (por 100.000 hab.)",
    x = "Sexo",
    fill = "Fuente de datos"
  ) +
  theme_minimal() +
  theme(legend.position = "top")

INTERPRETACIÓN Y VALIZACIÓN DE RESULTADOS

El gráfico de barras agrupadas compara las tasas de suicidio por sexo obtenidas de dos formas distintas: - Dato oficial (CSV): La tasa publicada directamente por el INE - Cálculo propio (JSON): La tasa que hemos calculado nosotros mismos sumando los suicidios absolutos por edad del JSON y dividiéndolos por la población oficial de España.

Como se puede observar, las barras verdes y las grises son prácticamente idénticas tanto para hombres como para mujeres. Esta coincidencia nos permite afirmar: - La validación metodológica, nuestro procedimiento para unir las bases de datos y calcular las tasas por edad ha sido correcto. - La consistencia de los datos, confirmarmos que ambas fuentes de datos del INE son coherentes entre sí, asegurando que los análisis detallados que hemos realizado anteriormente son representativos y fiables.

6. Análisis brecha de género

Para finalizar, calculamos cuántos hombres se suicidan por cada mujer en cada grupo de edad. Este gráfico responde a la pregunta: “¿Por cada mujer que se suicida en este grupo de edad, cuántos hombres lo hacen?. Un valor de 1 significa igualdad, un valor de 3 significa que hay 3 veces más suicidios masculinos en dicho grupo.

# 1. Preparamos los datos: Pivotamos para tener Hombres y Mujeres en columnas
brecha_genero <- Suicidios_Con_Tasas %>%
  select(edad, sexo, Tasa_Aportacion) %>%
  pivot_wider(names_from = sexo, values_from = Tasa_Aportacion) %>%
  # Calculamos el Ratio (Cuántos hombres por cada mujer)
  mutate(Ratio_H_M = Hombres / Mujeres)

# 2. Gráfico de Piruleta (Lollipop Chart) para visualizar la diferencia
ggplot(brecha_genero, aes(x = edad, y = Ratio_H_M)) +
  # Línea vertical desde 0 hasta el punto
  geom_segment(aes(x = edad, xend = edad, y = 0, yend = Ratio_H_M), color = "grey") +
  # Punto en el valor del ratio
  geom_point(size = 4, color = "#1f77b4") +
  # Texto con el valor exacto
  geom_text(aes(label = round(Ratio_H_M, 1)), vjust = -0.8, size = 3) +
  labs(
    title = "Brecha de género en el suicidio por edad",
    subtitle = "Ratio de masculinidad: Número de suicidios masculinos por cada suicidio femenino",
    y = "Ratio (Hombres / Mujeres)",
    x = "Grupo de Edad"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

INTERPRETACIÓN

Este análisis revela que el suicidio es un fenómeno muy masculinizado en todos los grupos de edad (todos los ratios son superiores a 1). Sin embargo, observamos que la brecha no es constante, se dispara en el grupo de 85 a 89 años, donde hay casi 5 hombres por cada mujer.

CONCLUSIONES

Tras el análisis comparativo de las tasas de suicidio en España utilizando datos oficiales del INE, podemos extraer las siguientes conclsiones princiaples: - una linea por grafico ………….

Este análisis de datos destaca la necesidad de estrategías de prevención dirigidas específicamente a los grupos de mayor riesgo identificados: hombres y….

REFERENCIAS